﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using EFITransmissao.Entidade;

namespace EFITransmissao
{
    public partial class FrmListaNovoMedidor : Form
    {
        private static string _ucRef;

        public static string UcRef
        {
            get { return FrmListaNovoMedidor._ucRef; }
            set { FrmListaNovoMedidor._ucRef = value; }
        }        

        public FrmListaNovoMedidor()
        {
            InitializeComponent();
        }

        private void btPesquisar_Click(object sender, EventArgs e)
        {
            if (txtPesquisa.Text != string.Empty)
            {                
                if (rbUC.Checked == true)
                {                    
                    NovoMedidor obj = new NovoMedidor();
                    obj = Controle.CtlCadMedidor.ObterMedidorCadastro_UC(txtPesquisa.Text);
                    if (obj.Uc == null)
                    {
                        panel.Hide();
                    }
                    else
                    {
                        cbMarcaMedidor.Text = obj.Marca;
                        cbModeloMedidor.Text = obj.Modelo;
                        txtEndereco.Text = obj.Endereco;
                        txtMedidor.Text = obj.MedidorLocal;
                        txtUC.Text = obj.Uc;
                        txtNovoMedidor.Text = obj.NovMedidor;
                        panel.Show();                        
                        txtNovoMedidor.Focus();
                    }
                }
                else
                {
                    NovoMedidor novomedidor = new NovoMedidor();
                    novomedidor = Controle.CtlCadMedidor.ObterMedidorCadastro_MEDIDOR(txtPesquisa.Text);
                    if (novomedidor.Uc == null)
                    {
                        panel.Hide();
                    }
                    else
                    {
                        cbMarcaMedidor.Text = novomedidor.Marca;
                        cbModeloMedidor.Text = novomedidor.Modelo;
                        txtEndereco.Text = novomedidor.Endereco;
                        txtMedidor.Text = novomedidor.MedidorLocal;
                        txtUC.Text = novomedidor.Uc;
                        txtNovoMedidor.Text = novomedidor.NovMedidor;
                        panel.Show();                        
                        txtNovoMedidor.Focus();
                    }
                }
            }
        }

        private void btFechar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btCancel_Click(object sender, EventArgs e)
        {
            panel.Hide();
            txtPesquisa.Focus();
        }

        private void FrmListaNovoMedidor_Load(object sender, EventArgs e)
        { 
            txtPesquisa.DataSource = PreencherListaPesquisa();
            cbMarcaMedidor.DataSource = Controle.CtlCadMedidor.ObterListaMARCA();
            cbModeloMedidor.DataSource = Controle.CtlCadMedidor.ObterListaMODELO();
            txtPesquisa.Focus();
        }

        private List<string> PreencherListaPesquisa()
        {
            List<string> lst = new List<string>();

            if (rbUC.Checked == true)
            {
                lst = Controle.CtlCadMedidor.ObterListaUC();
            }
            else
            {
                lst = Controle.CtlCadMedidor.ObterListaMEDIDOR();
            }

            return lst;
        }

        private void rbUC_CheckedChanged(object sender, EventArgs e)
        {            
            txtPesquisa.DataSource = PreencherListaPesquisa();
            txtPesquisa.Focus();
            panel.Visible = false;
        }

        private void rbMedidor_CheckedChanged(object sender, EventArgs e)
        {         
            txtPesquisa.DataSource = PreencherListaPesquisa();
            txtPesquisa.Focus();
            panel.Visible = false;
        }

        private void txtPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            panel.Visible = false;
        }

        private void btConfirmar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtNovoMedidor.Text) &&
                !string.IsNullOrEmpty(cbMarcaMedidor.Text) &&  
                 !string.IsNullOrEmpty(cbModeloMedidor.Text))
            {
                if (Int64.Parse(txtMedidor.Text) == Int64.Parse(txtNovoMedidor.Text))
                {
                    //this.Close();
                }
                else
                {
                    NovoMedidor obj = new NovoMedidor();
                    obj.Uc = txtUC.Text;
                    obj.NovMedidor = txtNovoMedidor.Text;
                    obj.Marca = cbMarcaMedidor.Text;
                    obj.Modelo = cbModeloMedidor.Text;
                    Controle.CtlCadMedidor.AtualizaCadMedidor(obj);
                    MessageBox.Show("Alterado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                    this.Close();
                }
            }
            else
                MessageBox.Show("Para confirmar alteração é necessário todos os campos estarem preenchidos!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                
        }

        private void btExcluir_Click(object sender, EventArgs e)
        {
            if (txtNovoMedidor.Text != string.Empty)
            {
                if (MessageBox.Show("Deseja Remover essa informação?", "Atenção!", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                {
                    NovoMedidor obj = new NovoMedidor();
                    obj.Uc = txtUC.Text;
                    Controle.CtlCadMedidor.ExcluirCadMedidor(obj);
                    RemoveOcorrencia();
                    MessageBox.Show("Excluído com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                    this.Close();
                }
            }
        }

        private void RemoveOcorrencia()
        {            
            Controle.CtlLeitura.AtualizarOcorrencia(txtUC.Text);                                            
        }

        private void txtNovoMedidor_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar) && e.KeyChar != (char)8)
                e.Handled = true; 

        }

        private void menuFechar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}